/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Ui.actions;

import Ui.MainWindow;
import algo.graphe.Graphe;
import algo.utilitaire.UtilitaireDijkstra;
import algo.utilitaire.UtilitaireMoore;
import algo.utilitaire.UtilitairePerformance;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;

/**
 * Classe d'action lors de la selection de graphe
 * @author DRAMSY Christian
 */
public class processAction extends AbstractAction {

    private MainWindow father;

    public processAction(MainWindow father, String wording) {
        super(wording);
        this.father = father;
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        boolean calculMode = this.father.getMesureComboBox().getSelectedItem().toString().equals("oui");
        boolean oriented = this.father.getOrientedGraphComboBox().getSelectedItem().toString().equals("orienté");
        String filename = this.father.getGraphComboBox().getSelectedItem().toString();
        Graphe g = new Graphe("files/" + filename, oriented);

        String algo = this.father.getAlgoComboBox().getSelectedItem().toString();
        if (algo.equals("DijkstraTableau")) {
            if (calculMode) {
                UtilitairePerformance.executeDijkstraTableau(g);
            } else {
                UtilitaireDijkstra.executeDijkstraTableau(g, true);
            }
        } else if (algo.equals("DijkstraTas")) {
            if (calculMode) {
                UtilitairePerformance.executeDijkstraTas(g);
            } else {
                UtilitaireDijkstra.executeDijkstraTas(g, true);
            }
        } else if (algo.equals("DijkstraListe")) {
            if (calculMode) {
                UtilitairePerformance.executeDijkstraListe(g);
            } else {
                UtilitaireDijkstra.executeDijkstraListe(g, true);
            }
        } else if (algo.equals("MooreTableau")) {
            if (calculMode) {
                UtilitairePerformance.executeMooreTableau(g);
            } else {
                UtilitaireMoore.executeMooreTableau(g, true);
            }
        } else if (algo.equals("MooreTas")) {
            if (calculMode) {
                UtilitairePerformance.executeMooreTas(g);
            } else {
                UtilitaireMoore.executeMooreTas(g, true);
            }
        } else if (algo.equals("MooreListe")) {
            if (calculMode) {
                UtilitairePerformance.executeMooreListe(g);
            } else {
                UtilitaireMoore.executeMooreListe(g, true);
            }
        }
    }
}
